[id].html.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <template>
  2. <ShopPageHead></ShopPageHead>
  3. <main class="index_main" id="all_vue">
  4. <HomeAdvertising :imgurl="adImg1"></HomeAdvertising>
  5. <ShopSubMenu></ShopSubMenu>
  6. <!-- 当前位置 -->
  7. <div class="categ_crumb_box2 clearfix_2">
  8. <div class="categ_crumb_left">
  9. <span class="categ_crumb_left_a" title=""> 当前位置: </span>
  10. <NuxtLink
  11. :to="`/xiangcunshangcheng/index.html`"
  12. class="categ_crumb_left_a"
  13. >
  14. 乡村商城
  15. </NuxtLink>
  16. &gt;
  17. <NuxtLink
  18. :to="`/xiangcunshangcheng/${targetSegment}/index.html`"
  19. class="categ_crumb_left_a"
  20. >
  21. {{name}}
  22. </NuxtLink>
  23. &gt;
  24. <NuxtLink
  25. :to="`/xiangcunshangcheng/${targetSegment}/qiugou/list-1.html`"
  26. class="categ_crumb_left_a"
  27. >
  28. 求购
  29. </NuxtLink>
  30. &gt;
  31. <span class="categ_crumb_left_text">{{shopData.name}}</span>
  32. </div>
  33. </div>
  34. <div class="supply_1_index_qiugou clearfix">
  35. <div class="supply_1_index_qiugou_left">
  36. <img class="supply_1_img" :src="shopImg" :alt="shopData.name">
  37. <div class="supply_1_right_qiugou">
  38. <h4 class="supply_1_h4">{{shopData.name}}</h4>
  39. <div class="supply_1_ul_qiugou clearfix">
  40. <div class="supply_1_li_qiugou clearfix"><label class="supply_1_li_label">发布日期</label><span
  41. class="supply_1_li_text ">{{getTimeText(shopData.created_at)}}</span></div>
  42. <div class="supply_1_li_qiugou clearfix"><label class="supply_1_li_label">截止日期</label><span
  43. class="supply_1_li_text ">{{getValidityTime(shopData)}}</span></div>
  44. <div class="supply_1_li_qiugou clearfix"><label class="supply_1_li_label">浏览次数</label><span
  45. class="supply_1_li_text ">{{ shopData.hits }}</span></div>
  46. <div class="supply_1_li_qiugou clearfix"><label class="supply_1_li_label">联 系 人</label><span
  47. class="supply_1_li_text ">{{ shopData.contact}}</span></div>
  48. <div class="supply_1_li_qiugou clearfix"><label class="supply_1_li_label">发布地区</label><span
  49. class="supply_1_li_text ">{{ shopData.address }}</span></div>
  50. <div class="supply_1_li_qiugou clearfix"><label class="supply_1_li_label">座 机</label><span
  51. class="supply_1_li_text ">{{ shopData.landline }}</span></div>
  52. <div class="supply_1_li_qiugou clearfix"><label class="supply_1_li_label">联系电话</label><span
  53. class="supply_1_li_text ">{{ shopData.phone }}</span></div>
  54. </div>
  55. </div>
  56. </div>
  57. <div class="supply_1_index_qiugou_right">
  58. <div class="shop_3_right clearfix">
  59. <div class="choice_1_box clearfix">
  60. <div class="choice_1_btn_box clearfix">
  61. <div class="choice_1_btn"
  62. :class="{ choice_1_btn_only: choice_1_num == 1 }"
  63. @mouseover="choice_1_num = 1">
  64. <span class="choice_1_btn_a">供应商品</span>
  65. </div>
  66. <div class="choice_1_btn"
  67. :class="{ choice_1_btn_only: choice_1_num == 2 }"
  68. @mouseover="choice_1_num = 2">
  69. <span class="choice_1_btn_a">求购商品</span>
  70. </div>
  71. </div>
  72. <div class="choice_1_card_box">
  73. <div class="shop_ul_img_2 choice_1_card clearfix" v-show="choice_1_num == 1">
  74. <div class="shop_li_img_2" v-for="(item,index) in boxData1">
  75. <nuxtLink
  76. :to="getShopPathDetail1(item)"
  77. class="shop_li_img_2_a"
  78. >
  79. <div class="shop_li_img_2_num"> {{ index + 1 }} </div>
  80. <div class="shop_li_img_2_right clearfix">
  81. <img class="shop_li_img_2_img" :src="item.imgurl" :alt="item.name">
  82. <div class="shop_li_img_2_text">
  83. {{item.name}}
  84. </div>
  85. </div>
  86. </nuxtLink>
  87. </div>
  88. </div>
  89. <div class="shop_ul_img_2 choice_1_card clearfix" v-show="choice_1_num == 2">
  90. <div class="shop_li_img_2" v-for="(item,index) in boxData2">
  91. <nuxtLink
  92. :to="getShopPathDetail1(item)"
  93. class="shop_li_img_2_a"
  94. >
  95. <div class="shop_li_img_2_num"> {{ index + 1 }} </div>
  96. <div class="shop_li_img_2_right clearfix">
  97. <img class="shop_li_img_2_img" :src="item.imgurl" :alt="item.name">
  98. <div class="shop_li_img_2_text">
  99. {{item.name}}
  100. </div>
  101. </div>
  102. </nuxtLink>
  103. </div>
  104. </div>
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. <div class="supply_2_index clearfix">
  111. <div class="supply_head_box clearfix_2">
  112. <a class="supply_head_a" title="" :class="{ supply_head_a_only: 1 == supply_choice_1_num }"
  113. @mouseover="supply_choice_1_num = 1">详情信息</a>
  114. <a class="supply_head_a" title="" :class="{ supply_head_a_only: 2 == supply_choice_1_num }"
  115. @mouseover="supply_choice_1_num = 2">发布人信息</a>
  116. </div>
  117. <div class="supply_art_out clearfix">
  118. <!-- 详情信息 -->
  119. <div class="supply_art_box" v-show="supply_choice_1_num == 1" v-html="shopData.detail"></div>
  120. <!-- 发布人信息 -->
  121. <div class="supply_art_box" v-show="supply_choice_1_num == 2">
  122. <p class="supply_art_box_p">公司名称:</p>
  123. <p class="supply_art_box_p">电子邮箱:{{shopData.email}}</p>
  124. <p class="supply_art_box_p">邮政编码:{{shopData.postal}}</p>
  125. <p class="supply_art_box_p">联系地址:{{shopData.address}}</p>
  126. </div>
  127. </div>
  128. </div>
  129. <ShopHotNews></ShopHotNews>
  130. </main>
  131. <HomeFoot></HomeFoot>
  132. </template>
  133. <script setup>
  134. //1.页面必备方法 start ---------------------------------------->
  135. import { ref, onMounted } from 'vue'
  136. import { ElRadio, ElRadioGroup } from 'element-plus'
  137. //1.2选项卡
  138. const supply_choice_1_num = ref(1)
  139. //1.3是否展示有效期
  140. const getValidityTime = (shopData) => {
  141. if(shopData.islong==1){
  142. return "无期限"
  143. }else{
  144. if(shopData.validity){
  145. return shopData.validity.split(' ')[0];
  146. }
  147. }
  148. }
  149. //1.4 格式化字符串时间
  150. const getTimeText = (time) => {
  151. if(time){
  152. return time.split(' ')[0];
  153. }else{
  154. return '';
  155. }
  156. }
  157. // 1.4应商品与求购商品的选项卡
  158. const choice_1_num = ref(1)
  159. //1.页面必备方法 end ---------------------------------------->
  160. //2.页面路径 start ---------------------------------------->
  161. //2.1 获得页面数据id
  162. const route = useRoute();
  163. const router = useRouter()
  164. let articleId = 0; //把路径转换为数据id
  165. const name = ref('') //当前频道名称
  166. const targetSegment = getRoutePath(2);//返回第二层的路径id
  167. //通过导航路径反向查询导航id
  168. const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
  169. method: 'GET',
  170. query: {
  171. 'pinyin': targetSegment,
  172. },
  173. });
  174. if(getRouteId.code == 200){
  175. articleId = getRouteId.data.category_id;
  176. name.value = getRouteId.data.alias;
  177. }else{
  178. console.log("错误位置:获得页面路径")
  179. }
  180. //2.3 获得子栏目列表
  181. const secondNav = ref([]);
  182. const selectedSecondId = ref(route.query.catid);//当前选中了哪个子导航
  183. let getSecondNav = async () => {
  184. const listData = await requestDataPromise('/web/getWebsiteModelCategory', {
  185. method: 'GET',
  186. query: {
  187. 'placeid': 1,
  188. 'pid': articleId,
  189. 'num': 50,
  190. },
  191. });
  192. if (listData.code == 200) {
  193. secondNav.value = listData.data
  194. } else {
  195. console.log("错误位置:获得子级栏目列表")
  196. }
  197. }
  198. getSecondNav();
  199. //2.4 获得cityid
  200. const cityId = ref(route.query.cityid)
  201. //2.页面路径 end ---------------------------------------->
  202. //3.获得商品详情 start ---------------------------------------->
  203. const shopId = ref(route.params.id) //获得商品的id
  204. const shopData = ref({});
  205. const shopImg = ref("")
  206. let getShopData = async () => {
  207. const shopReq = await requestDataPromise('/web/getWebsiteshopInfo', {
  208. method: 'GET',
  209. query: {
  210. 'id': parseFloat(shopId.value),
  211. },
  212. });
  213. if (shopReq.code == 200) {
  214. console.log(667788)
  215. console.log(shopReq)
  216. shopData.value = shopReq.data
  217. shopImg.value = shopReq.data.imgurl[0]
  218. } else {
  219. console.log("错误位置:获得商品详情")
  220. }
  221. }
  222. getShopData();
  223. //获得右侧供应与求购的内容
  224. const boxData1 = ref([]) //供应商品
  225. const boxData2 = ref([]) //求购商品
  226. //创建请求数据json
  227. let getJson = [
  228. {"level":"5,0,6"},//供应商品
  229. {"level":"6,0,6"},//求购商品
  230. ]
  231. let jsonString = JSON.stringify(getJson)
  232. //获取所有数据
  233. async function getPageAllData() {
  234. const mkdata = await requestDataPromise('/web/getWebsiteshop', {
  235. method: 'GET',
  236. query: {
  237. 'catid': 346,
  238. 'id': jsonString,
  239. },
  240. });
  241. if (mkdata.code == 200) {
  242. //供应商品
  243. boxData1.value = mkdata.data.goods[0];
  244. //求购商品
  245. boxData2.value = mkdata.data.goods[1];
  246. } else {
  247. ElMessage.error(mkdata.message)
  248. }
  249. }
  250. getPageAllData();
  251. //3.获得商品详情 end ---------------------------------------->
  252. //5.广告 start ---------------------------------------->
  253. //获得所有广告
  254. let adImg1 = ref({})
  255. onMounted(async () => {
  256. const { $webUrl, $CwebUrl } = useNuxtApp();
  257. //从客户端启动广告
  258. //广告1
  259. let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=xcw_shopdetail_0001`
  260. const responseAd1 = await fetch(url, {
  261. headers: {
  262. 'Content-Type': 'application/json',
  263. 'Userurl': $CwebUrl,
  264. 'Origin': $CwebUrl
  265. }
  266. });
  267. const resultAd1 = await responseAd1.json();
  268. adImg1.value = resultAd1.data[0];
  269. })
  270. //5.广告 end ---------------------------------------->
  271. </script>
  272. <style lang="less" scoped>
  273. @import '@/assets/css/shop/detail.less';
  274. </style>